package com.wlt.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wlt.pojo.Brand;
import com.wlt.result.BaseResult;
import com.wlt.service.BrandService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @RestController 下的所有方法只返回数据不进行页面跳转，不用写@ResponseBody了
 */
@RestController
@RequestMapping("/brand")
public class BrandController
{
    @DubboReference     // 远程注入，用dubbo的方式调用服务的生产者
    private BrandService brandService;
    
    /**
     * 根据id查询品牌
     * @param id    品牌id
     * @return      查询结果
     */
    @GetMapping ("/findById")
    public BaseResult<Brand> findById (Long id)
    {
        Brand brand = brandService.findById(id);
        
        return BaseResult.success(brand);
    }
    
    /**
     * 查询所有品牌
     * @return  查询结果
     */
    @GetMapping ("/all")
    public BaseResult<List<Brand>> findAll ()
    {
        List<Brand> brands = brandService.findAll();
        
        return BaseResult.success(brands);
    }
    
    /**
     * 新增品牌
     * @param brand 品牌对象
     * @return      执行结果
     */
    @PostMapping ("/add")
    public BaseResult add (@RequestBody Brand brand)
    {
        brandService.add(brand);
        
        return BaseResult.success();
    }
    
    /**
     * 修改品牌
     * @param brand 品牌对象
     * @return      执行结果
     */
    @PutMapping ("/update")
    public BaseResult update (@RequestBody Brand brand)
    {
        brandService.update(brand);
        
        return BaseResult.success();
    }
    
    /**
     * 删除品牌
     * @param id    品牌id
     * @return      执行结果
     */
    @DeleteMapping ("/delete")
    public BaseResult delete (Long id)
    {
        brandService.delete(id);
        
        return BaseResult.success();
    }
    
    /**
     * 分页查询品牌
     * @param brand 查询条件对象
     * @param page  页码
     * @param size  每页条数
     * @return      查询结果
     */
    @GetMapping ("/search")
    public BaseResult<Page<Brand>> search (Brand brand, int page, int size)
    {
        Page<Brand> brandPage = brandService.search(brand, page, size);
        
        return BaseResult.success(brandPage);
    }
    
}
